From: Carlos Garnacho Date: Fri, 6 Oct 2017 14:50:29 +0000 (+0200) Subject: treeview: Transform motion event coords to "bin window" coords X-Git-Tag: archive/raspbian/4.4.1+ds1-2+rpi1~1^2~428^2^2~184 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=0724fa7f61cde5c3934587cc6d04e8922f0b0cbc;p=gtk4.git treeview: Transform motion event coords to "bin window" coords The operations rely there on bin window relative coordinates, but we are receiving GtkTreeView relative coordinates there. Fixes clicking on treeview expanders, which was offset by visible headers. --- diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index cc974a1653..315a5d7ade 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -4477,18 +4477,22 @@ gtk_tree_view_motion (GtkWidget *widget, if (tree_view->priv->tree) { + gint bin_x, bin_y; + /* If we are currently pressing down a button, we don't want to prelight anything else. */ if (gtk_gesture_is_active (tree_view->priv->drag_gesture) || gtk_gesture_is_active (tree_view->priv->multipress_gesture)) node = NULL; - new_y = MAX (0, TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, y)); + gtk_tree_view_convert_widget_to_bin_window_coords (tree_view, x, y, + &bin_x, &bin_y); + new_y = MAX (0, TREE_WINDOW_Y_TO_RBTREE_Y (tree_view, bin_y)); _gtk_rbtree_find_offset (tree_view->priv->tree, new_y, &tree, &node); - tree_view->priv->event_last_x = x; - tree_view->priv->event_last_y = y; - prelight_or_select (tree_view, tree, node, x, y); + tree_view->priv->event_last_x = bin_x; + tree_view->priv->event_last_y = bin_y; + prelight_or_select (tree_view, tree, node, bin_x, bin_y); } for (list = tree_view->priv->columns; list; list = list->next)